package com.tangyee.person_risk_assessment.data;

import com.tangyee.person_risk_assessment.bean.OptionScoreBean;
import com.tangyee.person_risk_assessment.bean.QuestionBean;
import com.tangyee.person_risk_assessment.bean.OptionScoreBean;
import com.tangyee.person_risk_assessment.bean.QuestionBean;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 评估调查的问题的实体
 */
public class QuestionEntity {

    /**
     * 下面的四组数据是一一对应的关系
     */
    //  问题的题目
    final private String[] questionTitle = {
            "您的年龄区域",
            "您的性别",
            "如果您是女性，是否曾诊断为妊娠期糖尿病？",
            "您的父母兄弟中是否患有糖尿病？",
            "您是否曾诊断有高血压？",
            "您是否有规律的体育锻炼？",
            "您的身高 [米]与体重 [公斤]:"
    };
    // 问题的选项
    final private String[][] questionOptionList = {
            {"小于40[0分]", "40-49[1分]", "50-59[2分]", "大于60[3分]"},
            {"男[1分]", "女[0分]"},
            {"是[1分]", "否[0分]"},
            {"是[1分]", "否[0分]"},
            {"是[1分]", "否[0分]"},
            {"是[0分]", "否[1分]"},
            {"您的身高 [米]", "您的体重 [公斤]"}
    };
    /**
     * 身高与体重共同得到一个分数,这里先默认一个 0 值
     * 具体得到的值是参考（BMI）=体重（kg）÷身高^2（m） ， EX：70kg÷（1.75×1.75）=22.86
     * 过轻：低于18.5 （暂不计分）
     *正常：18.5-23.9 （0）
     *过重：24-27      (1分)
     *肥胖：28-32      (2分)
     *非常肥胖, 高于32 (3分)
     */
    // 问题的每个选项所对应的分数
    final private int[][] questionOptionScore = {
            {0, 1, 2, 3},
            {1, 0},
            {1, 0},
            {1, 0},
            {1, 0},
            {0, 1},
            {0}
    };
    // 每个问题的问题点
    final private String[] questionPoint = {
      "年龄",
      "性别",
      "妊娠糖尿病",
      "家族糖尿病史",
      "高血压",
      "不经常锻炼身体",
      "肥胖 "
    };

    // 每道题的问题与选项
    private List<QuestionBean> questionEntityList;
    // 每到的问题点与分数
    private List<OptionScoreBean> optionScoreList;

    private int questionNumber;

    public QuestionEntity(){
        this.questionEntityList = new ArrayList<>();
        this.optionScoreList = new ArrayList<>();
        setQuestionEntityList();
        setOptionScoreList();
        setQuestionNumber();
    }

    public List<QuestionBean> getQuestionEntityList() {
        return questionEntityList;
    }

    private void setQuestionEntityList(){
        // 一次循环就设置一个问题的问题与选项关系
        for(int i = 0; i < questionTitle.length; i++){
            QuestionBean questionBean = new QuestionBean();

            List<String> optionList = new ArrayList<>(Arrays.asList(questionOptionList[i]));

            questionBean.setQuestionTitle(questionTitle[i]);
            questionBean.setQuestionOptionList(optionList);

            questionEntityList.add(questionBean);
        }
    }

    public List<OptionScoreBean> getOptionScoreList() {
        return optionScoreList;
    }

    private void setOptionScoreList() {
        // 一次循环就设置一个问题的分数与问题要点的关系
        for (int i = 0; i < questionTitle.length; i++){
            OptionScoreBean optionScoreBean = new OptionScoreBean();

            optionScoreBean.setOptionScore(questionOptionScore[i]);
            optionScoreBean.setQuestionPoint(questionPoint[i]);

            optionScoreList.add(optionScoreBean);
        }
    }

    public int getQuestionNumber() {
        return questionNumber;
    }

    private void setQuestionNumber() {
        this.questionNumber = questionEntityList.size();
    }

}
